Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New FromRequest[Parts] trait cleanup #1288

Merged
merged 2 commits into from
Aug 21, 2022

Conversation

jplatte
Copy link
Member

@jplatte jplatte commented Aug 21, 2022

Who would have thought that it's so easy? 😅 (the tuple stuff)

@jplatte jplatte requested a review from davidpdrsn August 21, 2022 17:47
where
$( $ty: FromRequestParts<S> + Send, )*
$last: FromRequest<S, B, super::private::Once> + Send,
$last: FromRequest<S, B> + Send,
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we want to write some docs about how to write generic extractors that wrap other extractors (that might or might not consume the request), this seems like pretty straight-forward advice: Implement both FromRequestParts and FromRequest, without any generic-ness over M in the latter case.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes! Its on the todo list here

@jplatte
Copy link
Member Author

jplatte commented Aug 21, 2022

One more thought: Maybe we should rename Mut to ViaParts now that the traits are no longer FromRequestOnce, FromRequestMut? Not sure about the Once name.

Copy link
Member

@davidpdrsn davidpdrsn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Haha awesome!

@davidpdrsn
Copy link
Member

One more thought: Maybe we should rename Mut to ViaParts now that the traits are no longer FromRequestOnce, FromRequestMut? Not sure about the Once name.

@jplatte ViaParts and ViaRequest maybe?

@davidpdrsn davidpdrsn merged commit 5e7e2f7 into from-request-mut-once Aug 21, 2022
@davidpdrsn davidpdrsn deleted the from-request-mut-once--cleanup branch August 21, 2022 18:43
davidpdrsn added a commit that referenced this pull request Aug 22, 2022
* Only allow last extractor to mutate the request

* Change `FromRequest` and add `FromRequestParts` trait (#1275)

* Add `Once`/`Mut` type parameter for `FromRequest` and `RequestParts`

* 🪄

* split traits

* `FromRequest` for tuples

* Remove `BodyAlreadyExtracted`

* don't need fully qualified path

* don't export `Once` and `Mut`

* remove temp tests

* depend on axum again

Co-authored-by: Jonas Platte <jplatte+git@posteo.de>

* Port `Handler` and most extractors (#1277)

* Port `Handler` and most extractors

* Put `M` inside `Handler` impls, not trait itself

* comment out tuples for now

* fix lints

* Reorder arguments to `Handler` (#1281)

I think `Request<B>, Arc<S>` is better since its consistent with
`FromRequest` and `FromRequestParts`.

* Port most things in axum-extra (#1282)

* Port `#[derive(TypedPath)]` and `#[debug_handler]` (#1283)

* port #[derive(TypedPath)]

* wip: #[debug_handler]

* fix #[debug_handler]

* don't need itertools

* also require `Send`

* update expected error

* support fully qualified `self`

* Implement FromRequest[Parts] for tuples (#1286)

* Port docs for axum and axum-core (#1285)

* Port axum-extra (#1287)

* Port axum-extra

* Update axum-core/Cargo.toml

Co-authored-by: Jonas Platte <jplatte+git@posteo.de>

* remove `impl FromRequest for Either*`

Co-authored-by: Jonas Platte <jplatte+git@posteo.de>

* New FromRequest[Parts] trait cleanup (#1288)

* Make private module truly private again

* Simplify tuple FromRequest implementation

* Port `#[derive(FromRequest)]` (#1289)

* fix tests

* fix docs

* revert examples

* fix docs link

* fix intra docs links

* Port examples (#1291)

* Document wrapping other extractors (#1292)

* axum-extra doesn't need to depend on axum-core (#1294)

Missed this in #1287

* Add `FromRequest` changes to changelogs (#1293)

* Update changelog

* Remove default type for `S` in `Handler`

* Clarify which types have default types for `S`

* Apply suggestions from code review

Co-authored-by: Jonas Platte <jplatte+git@posteo.de>

Co-authored-by: Jonas Platte <jplatte+git@posteo.de>

* remove unused import

* Rename `Mut` and `Once` (#1296)

* fix trybuild expected output

Co-authored-by: Jonas Platte <jplatte+git@posteo.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants